/*
* INSANE - Interactive Structural Analysis Environment
*
* Copyright (C) 2003-2005
* Universidade Federal de Minas Gerais
* Escola de Engenharia
* Departamento de Engenharia de Estruturas
* 
* Author's email :    insane@dees.ufmg.br
* Author's website :  http://www.dees.ufmg.br/insane
* 
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
* 
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* 
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

package br.ufmg.dees.insane.model.geo.geometricTransformations.projections;

import br.ufmg.dees.insane.util.IMatrix;

/**
 * The class represents the parallel projections axonometrics
 *  of a geometric form in a plane
 * 
 * @author Ferraz, Rafaela & Penna, Samuel
 * @version 1.0
 */
public class Axonometric extends Ortographics{
   
	
    private double angle1;
    private double angle2;

    
    /** The constructor
     * @param angulo1
     * @param angulo2
     */
    public Axonometric(double angle1, double angle2){
        this.angle1 = angle1;
        this.angle2 = angle2;
    }
   	
    
    /**
     * @return t the matrix of a axonometric projection
     */
    public IMatrix getMatrix()
    {
    	IMatrix t = new IMatrix(4,4);
        t.setElement(0, 0, Math.cos(Math.toRadians(angle1)));
        t.setElement(0, 1, Math.sin(Math.toRadians(angle1))*Math.sin(Math.toRadians(angle2)));
        t.setElement(1, 1, Math.cos(Math.toRadians(angle2)));
        t.setElement(2, 0, Math.sin(Math.toRadians(angle1)));
        t.setElement(2, 1, -Math.cos(Math.toRadians(angle1))*Math.sin(Math.toRadians(angle2)));
        t.setElement(3, 3, 1);
        
        return t;
    }
    
	/**
	 * @return
	 */
	public double getAngle1() {
		return angle1;
	}

	/**
	 * @param angle1
	 */
	public void setAngle1(double angle1) {
		this.angle1 = angle1;
	}

	/**
	 * @return
	 */
	public double getAngle2() {
		return angle2;
	}

	/**
	 * @param angle2
	 */
	public void setAngle2(double angle2) {
		this.angle2 = angle2;
	}
    
//***************************  
}//end of this class
